表1 TTCリファレンスマニュアル   ■構文規則   プログラム   ・文法はほぼtiny BASICと同様   ・ラベルは0〜1023の範囲で必要なところだけつける   ・コマンドとラベルのあいだは1個のスペースで区切る   ・ステートメント間のセパレータはスペース   ・セミコロン以下の1行は注釈とみなされる   ・ステートメントと式のあいだはスペースでくぎる   式   ・ひとつの項、もしくは複数の項を2項演算子でつないだもの   ・演算はすべて符号なし8ビットで行われる。また、オバーフローの    チェックはしない   ・負数は2の補数または、0−のかたちで表現する   ・演算は優先順位がないので、左から順番に行われる。また、括弧を使    うことはできない   項   ・定数、変数、関数   ■定数   10進数   ・取りうる値は、0〜255。255以上の値は、256で割った余りが値となる   16進数   ・先頭に$をつけて表す。値の範囲は00H〜FFH。必ず2桁で表すこと   文字定数   ・シングルクォーテーションを先頭とする1文字のASCIIコードを値とす    る   ■変数   1文字変数   ・A,B……Zの1文字で表される変数   特集変数   ・[と]の2つで、WIND命令で表される番地をアクセスする   ■演算子   2項演算子   ・加減乗除剰余記号、比較演算子、論理演算子がある   加減乗除剰余記号   ・それぞれ、+、-、*、/、\である   比較演算子   ・=、#(<>のこと)、>、<   ・真のとき1、偽のとき0を値とする   倫理演算子   ・AND、OR、XOR、の3種があり、それぞれ、&、;、!で表す   ■ステートメント   .(ピリオド)    .変数名=式   ・左辺の項に右辺の式の値を代入する。BAISCのLET文と同じ   INC    INC 1文字変数   ・変数の値に1を加える。機械語と同じキャリは立たない   DEC    DEC 1文字変数   ・変数の値に−1を加える   ADC    ADC 1文字変数   ・キャリフラグの値を加える    具体的には、      .B=0 .A=A+1 ADC B    とすると、A=255のとき、B=1となる   GOTO    GOTO ラベル   ・指定行へ分岐する。コマンドとラベルのあいだのスペースは1個だけ   GOSUB    GOSUB ラベル   ・サブルーチンを呼び出す   RETURN    RETURN   ・GOSUBに対応するRETURN。または、BASICのEND文   IF    IF 式,ラベル   ・式の値が0以外(要するに真)ならば、指定行へ分岐する   REPEAT〜UNTIL    REPEAT    UNTIL 式   ・式の値が1になるまで、REPEATとUNTILのあいだのプログラムを繰り    返す。なお、途中でGOTOなどで抜け出してもかまわない   END    END   ・この命令によってコンパイルを終了する   "str"   ・ダブルクォーテーションで囲まれた文字列をそのまま出力する   'str'   ・シングルクォーテーションで囲まれた文字列をコントロールコードと    して出力する      D……カーソルを下へ1文字分移動      U……カーソルを上へ1文字分移動      R……カーソルを右へ1文字分移動      L……カーソルを左へ1文字分移動      C……画面をクリア      /……改行する   PRT1    PRT1 式1,式2   ・式の値を10進右詰め3桁で出力する   PRT2    PRT2 式1,式2   ・式1を上位バイト、式2を下位バイトとみなした2バイトの値を10進    右詰め5桁で出力する   HEX2    HEX2 式   ・式の値を16進2桁で出力する   HEX4    HEX4 式1,式2   ・式1を上位バイト、式2を下位バイトとみなして、16進4桁で出力する   CHR    CHR 式   ・式の値のASCIIコードを出力する   WIDCH    WIDCH 式   ・画面の桁数を指定する   LOCATE    LOCATE 式1,式2   ・式1をX座標、式2をY座標とする位置へカーソルを移動する   BELL    BELL 式   ・式の回数だけビープ音を鳴らす   WIND1    WIND1 式1,式2   ・特殊変数[がアクセスする番地を決める。式1が上位バイト、式2が    下位バイトを表す   WIND2    WIND2 式1,式2   ・特殊変数]がアクセスする番地を決める。WIND1と同様   CALL    CALL 式1,式2   ・式1を上位バイト、式2を下位バイトとするアドレスの機械語サブル    ーチンをコールする   DB    DB 定数,定数,……   ・定数(10進と16進のみ)をそのままメモリに落とす。   DW    DW 定数,定数,……   ・定数(10進と16進のみ)をそのままメモリに落とす。アセンブラのDW    と同様。なお、この命令のみ、10進数は、0〜65535、16進数は、0000H    〜FFFFHの4桁にあんる。また、/ラベルと書くことによりそのラベルが    示すアドレスがメモリに落ちる   DM    DM "str"   ・ダブルクォーテーションに囲まれた文字列をそのままメモリい落とす    アセンブラのDMと同様   PUTA    PUTA 式   ・式の値をAcc与える   GETA    GETA 変数   ・Accの値を変数に与える   PUTDE    PUTDE 式1,式2   ・式1の値をDレジスタに、式2の値をEレジスタに与える   GETDE    GETDE 変数1,変数2   ・Dレジスタの値を変数1、Eレジスタの値を変数2に与える  ■関数   (I    (I   ・キーが押されるのを持って1文字入力し、そのASCIIコードを値とする   (G    (G   ・リアルタイムキー入カ。どのキーも押されていないならば0、なにか    のキーが押されていれば、そのASCIIコードを値とする   (F    (F   ・カーソルを点滅させて1文字入力する   (R    (R   ・0〜255までの乱数を返す   (X    (X   ・カーソルのX座標を値とする   (Y    (Y   ・カーソルのY座標を値とする   %R    式%R   ・式の値を1ピット分、右にずらす   %L    式%L   ・式の値を1ビット分、左にずらす 表2 エラーメッセージ表   SYNTAX ERROR    ステートメントの記述がおかしい   ILLEGAL FUNCTION CALL    式の記述がおかしい   UNDEFUNED LABEL    分岐先の行が見あたらない   OUT OF LABEL    ラベルが1023を超えた   NO END ERROR    END文がない   BAD REPEAT    REPEATループのネスティングが16重を超えた 図1 メモリマップ $0000+−−−−−−+  $0000+−−−−+      | S−OS |       |ラベル | $3000|−−−−−−|       |テーブル|      | TTC  |  $1000|−−−−|      |コンパイラ部|       |ラベル | $3D75|−−−−−−|       |ワーク |      | TTC  |  $1FFF+−−−−+      |ランタイム |   特殊ワークエリア      | ルーチン | $38E6|−−−−−−|      |ワークエリア| $3915+−−−−−−+